import Vue from 'vue';
import 'amfe-flexible';
import App from './App.vue';
/* 直接导入文件夹，就会默认导入其中的index.js文件必须是名字为index的js文件 */
import router from './router';
import store from './store';

/* 按需引入组件 */
import {
  Tabbar,
  TabbarItem,
  Tab,
  Tabs,
  Swipe,
  SwipeItem,
  Lazyload,
  Grid,
  GridItem,
  Card,
  Tag,
  Field,
  Cell,
  CellGroup,
  Image,
  Button,
  Toast,
  GoodsAction,
  /* GoodsAction 商品导航 */
  GoodsActionIcon,
  GoodsActionButton,
  Divider,
  SubmitBar,
  Checkbox,
  CheckboxGroup,
  Stepper,
  NavBar,
  Icon,
  Search,
  AddressList,
  AddressEdit,
  Notify
} from 'vant';
/**
 * 安装 Vue.js 插件。
 * 该方法需要在调用 new Vue() 之前被调用。
 */
Vue.use(Tabbar)
  .use(TabbarItem)
  .use(Lazyload)
  .use(Tab)
  .use(Tabs)
  .use(Swipe)
  .use(SwipeItem)
  .use(Grid)
  .use(GridItem)
  .use(Card)
  .use(Tag)
  .use(Field)
  .use(Cell)
  .use(CellGroup)
  .use(Image)
  .use(Button)
  .use(Toast)
  .use(GoodsAction)
  .use(GoodsActionIcon)
  .use(GoodsActionButton)
  .use(Divider)
  .use(SubmitBar)
  .use(Checkbox)
  .use(CheckboxGroup)
  .use(Stepper)
  .use(NavBar)
  .use(Icon)
  .use(Search)
  .use(AddressEdit)
  .use(Notify)
  .use(AddressList);

import axios from 'axios';
Vue.prototype.$axios = axios;

/* 注册全局组件 */
import GoodsList from './components/GoodsList.vue';
Vue.component('GoodsList', GoodsList);

Vue.config.productionTip = false;

// 添加请求拦截器,把token添加到请求头中，（注：登录的时候不需要添加）
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response;
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

/* 使用钩子函数对路由进行跳转权限判断 */
router.beforeEach((to, from, next) => {
  /* to.meta.permission当没有这个属性的时候，就直接跳过不进行判断 */
  if (to.meta.permission) {
    if (localStorage.getItem('token')) {
      /* 在此处判断对应登录人是否有对应的路由
        1.获取所有的权限判断是否有该路由 ，没有显示404页面
        2.获取登录人对应的路由，没有权限，显示403页面
      */
    } else {
      next('/login');
    }
  } else {
    next();
  }
});

/* 手动地挂载一个未挂载的实例 */
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app');